// 测试多次消息上报
const Sentry = require('../examples/wxapp/lib/sentry-miniapp.js');

// 模拟小程序环境
global.wx = {
  request: function(options) {
    console.log('\n=== wx.request 调用 ===');
    console.log('URL:', options.url);
    console.log('Method:', options.method);
    console.log('Headers:', JSON.stringify(options.headers, null, 2));
    
    // 解析请求体以显示消息信息
    if (options.data) {
      try {
        const lines = options.data.split('\n');
        const eventLine = lines.find(line => line.includes('"message"'));
        if (eventLine) {
          const event = JSON.parse(eventLine);
          if (event.message) {
            console.log('消息内容:', event.message);
          }
        }
      } catch (e) {
        // 忽略解析错误
      }
    }
    
    // 模拟成功响应
    if (options.success) {
      options.success({
        statusCode: 200,
        data: { success: true }
      });
    }
  },
  getSystemInfo: function() {
    return {
      platform: 'devtools',
      version: '8.0.5',
      SDKVersion: '2.19.4'
    };
  },
  showToast: function(options) {
    console.log('Toast:', options.title);
  }
};

// 模拟页面数据
const pageData = {
  messageCount: 0
};

// 模拟 setData 方法
function setData(data) {
  Object.assign(pageData, data);
  console.log('页面数据更新:', pageData);
}

try {
  // 初始化 Sentry
  Sentry.init({
    dsn: 'https://test@sentry.io/123456',
    environment: 'test',
    debug: false, // 关闭调试日志以便观察
    beforeSend(event) {
      console.log('\n--- beforeSend 被调用 ---');
      console.log('事件类型:', event.type || 'message');
      console.log('事件ID:', event.event_id);
      if (event.message) {
        console.log('消息内容:', event.message);
      }
      console.log('标签:', event.tags);
      return event;
    }
  });
  
  console.log('Sentry 初始化成功\n');
  
  // 模拟多次点击消息上报按钮
  function testMessage() {
    // 更新消息点击计数
    const messageCount = (pageData.messageCount || 0) + 1;
    setData({
      messageCount: messageCount
    });
    
    // 捕获自定义消息，添加时间戳以避免去重
    const timestamp = new Date().toISOString();
    Sentry.captureMessage(`用户点击了测试按钮 - ${timestamp}`, 'info', {
      tags: {
        action: 'test_message',
        page: 'index',
        click_count: messageCount,
      },
      extra: {
        timestamp: timestamp,
        userAgent: 'miniapp',
        clickCount: messageCount,
      },
    });
    
    console.log(`消息已上报 (${messageCount})`);
  }
  
  console.log('开始测试多次消息上报...');
  
  // 模拟连续点击 5 次
  for (let i = 1; i <= 5; i++) {
    console.log(`\n========== 第 ${i} 次点击 ==========`);
    testMessage();
  }
  
  console.log('\n测试完成！');
  
} catch (error) {
  console.error('测试失败:', error);
  process.exit(1);
}